import models._
import services._
import play.api._

object Global extends GlobalSettings {

  override def onStart(app: Application) {
    
    import models._
    import services._

    try {
      if (InstituicaoService.list().length == 0) {
        val nomeIFRN = "IFRN - Instituto Federal de Educacao Ciencias e Tecnologia do Rio Grande do Norte"
        val emailIFRN = "comunicacao.reitoria@ifrn.edu.br"
        val enderecoIFRN = Endereco(None, "Rua Dr. Nilo Bezerra Ramalho", "", "1692", "Tirol", "59015-300", "Natal", "RN")
        val telefoneIFRN = Telefone(None, "(84) 4005-0757")
        val ifrn = Instituicao(None, nomeIFRN, emailIFRN, Some(enderecoIFRN), List(telefoneIFRN))

        val nomeUFRN = "UFRN - Universidade Federal do Rio Grande do Norte"
        val emailUFRN = "ufrn@ufrn.br"
        val enderecoUFRN = Endereco(None, "Campos Universitario", "", "", "Lagoa Nova", "59078-970", "Natal", "RN")
        val ufrn = Instituicao(None, nomeUFRN, emailUFRN, Some(enderecoUFRN), Nil)

        InstituicaoService.create(ifrn)
        InstituicaoService.create(ufrn)
        Logger.info("Instituições Criadas !")
      }
    } catch {
      case e: Exception => Logger.error("Erro ao criar as Instituições: " + e.getMessage)
    }

    try {
      if (PesquisadorService.list().length == 0) {
        val nomeCamaraCascudo = "Luis da Camara Cascudo"
        val emailCamaraCascudo = "camara.cascudo@gmail.com"
        val usuarioCamaraCascudo = Usuario("camara.cascudo", "senha123")
        val camaraCascudo = Pesquisador(None, nomeCamaraCascudo, emailCamaraCascudo, usuarioCamaraCascudo, InstituicaoService.list().head, Nil)

        val nomeGracilianoRamos = "Graciliano Ramos de Oliveira"
        val emailGracilianoRamos = "graciliano.ramos@gmail.com"
        val usuarioGracilianoRamos = Usuario("graciliano.ramos", "senha123")
        val gracilianoRamos = Pesquisador(None, nomeGracilianoRamos, emailGracilianoRamos, usuarioGracilianoRamos, InstituicaoService.list().last, Nil)

        PesquisadorService.create(camaraCascudo)
        PesquisadorService.create(gracilianoRamos)
        Logger.info("Pesquisadores Criados !")
      }
    } catch {
      case e: Exception => Logger.error("Erro ao criar os Pesquisadores: " + e.getMessage);
    }

    try {
      if (AreaConhecimentoService.list().length == 0) {
        val areaBiomedica = "Biomedica"
        val descricaoBiomedica = "Area Biomedica"
        val biomedica = AreaConhecimento(None, areaBiomedica, descricaoBiomedica, None)

        AreaConhecimentoService.create(biomedica)

        val areaNeurociencia = "Neurociencia"
        val descricaoNeurociencia = "Area da Neurociencia"
        val neurociencia = AreaConhecimento(None, areaNeurociencia, descricaoNeurociencia, Some(AreaConhecimentoService.list().head))

        AreaConhecimentoService.create(neurociencia)
        Logger.info("Áreas de Conhecimento Criadas !")
      }
    } catch {
      case e: Exception => Logger.error("Erro ao criar as Áreas de Conhecimento: " + e.getMessage);
    }

  }

}